package kr.co.bettersoft.carrotmemberstore.activity;
/**
 * MainActivityMileage
 * 메인 탭 - 고객 마일리지 확인 화면
 * 
 * 프레임 2개.
 *   - 좌측은 전체 고객수 및 마일리지 리스트(필요시 내부 스크롤 가능하도록)..
 *   - 우측은 웹뷰로 마일리지 그래프를 보여줌. 
 * 
 */
import java.util.ArrayList;
import java.util.List;

import org.apache.http.util.EncodingUtils;
import org.json.JSONObject;

import kr.co.bettersoft.carrotmemberstore.R;
import kr.co.bettersoft.carrotmemberstore.adapter.MileageListAdapter;
import kr.co.bettersoft.carrotmemberstore.common.CarrotMemberStoreRest;
import kr.co.bettersoft.carrotmemberstore.common.CommonConstant;
import kr.co.bettersoft.carrotmemberstore.domain.CheckMileageMileage;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.GridView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivityMileage extends Activity {

	String TAG = "MainActivityMileage";

	final int SELECT_MERCHANT_MEMBER_MILEAGE_LIST = 301;					
	
	
	CarrotMemberStoreRest carrotMemberStoreRest;
	String callResult = "";
	String tempstr = "";
	JSONObject jsonObject;
//	carrotMemberStoreRest = new CarrotMemberStoreRest(); // oncreate

	int isUpdating = 0;
	
	int max = 0;			// 가져온 데이터 개수
	
	WebView mileageWebView;

	// 웹뷰용 URL
	String loadingURL = (CommonConstant.domain).concat("/mGraph.do"); 	 	// "http://www.mcarrot.net/mGraph.do";		//     
	String postData = "";

//	// 전달받은 가맹점 정보
	String merchantId;
	String countryCode;
	String languageCode;

	Boolean nowLoading = false;					// 우측 웹뷰 그래프 로딩 중 표시.
	Boolean webPageLoaded = false;				// 우측 웹뷰 로딩 완료 여부

	Boolean mIsLast = false;			// 끝까지 갔음. true 라면 더이상의 추가 없음. 새 조회시 false 로 초기화
	Boolean adding = false;			// 데이터 더하기 진행 중임.
	Boolean newSearch = true;       // 처음 검색인지 여부. 처음검색이면 어댑터에 세팅을, 처음이 아닌 추가라면 어댑터에 알림을.. 
	private MileageListAdapter mileageListAdapter;		// 그리드뷰 사용할 아답터
	public ArrayList<CheckMileageMileage> entries1 = new ArrayList<CheckMileageMileage>();	// 1차적으로 조회한 결과. 
	List<CheckMileageMileage> entriesFn = new ArrayList<CheckMileageMileage>();				// 최종 산출물
	int isRunning = 0;			// 연속 실행 방지. 실행 중에 다른 실행 요청이 들어올 경우, 무시한다.
	View emptyView;				// 데이터 없음 뷰
	
	// 진행바
	ProgressBar pb1;		// 우측 중단 로딩 진행바
	// 좌측 화면 진행바
	ProgressBar pb01;		// 좌측 중단 로딩 진행바
	ProgressBar pb02;		// 좌측 하단 추가 진행바
	GridView gridView;

	TextView custumerNum;		

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	// 핸들러
	Handler handler = new Handler(){
		@Override
		public void handleMessage(Message msg){
			try{
				Bundle b = msg.getData();		
				if(b.getInt("showListYN")==1){
					// 데이터를 화면에.. 
					if((entriesFn!=null)&&(entriesFn.size()>0)){
						//						Log.e(TAG,"indexDataFirst::"+indexDataFirst);
						custumerNum.setText(entriesFn.size()+"");
						if(newSearch){		// 새로운 검색일 경우 새로 설정, 추가일 경우 알림만 하기 위함.
							setGriding();
							newSearch = false;		// 다시 돌려놓는다. 이제는 최초 검색이 아님.
						}else{
							mileageListAdapter.notifyDataSetChanged();		// 알림 -> 변경사항이 화면상에 업데이트 되도록함.
						}
						gridView.setEnabled(true);			// 그리드 뷰 허용함.
					}else{
						Log.d(TAG,"no data");
						custumerNum.setText("0");				// 이용 고객 데이터없음 -->  이용 고객수 = 0
						if(gridView==null){
							gridView  = (GridView)findViewById(R.id.gridview);
						}
						emptyView = findViewById(R.id.empty1);		// 데이터 없으면 '빈 페이지'(데이터 없음 메시지)표시
						gridView.setEmptyView(emptyView);
						gridView.setVisibility(8);			//   0 visible   4 invisible   8 gone
						emptyView.setVisibility(0);
					}
					adding = false;
					hideLeft1Pb();
				}
				if(b.getInt("showProgressR1")==1){	
					//우측 프로그래스바 실행
					if(pb1==null){
						pb1=(ProgressBar) findViewById(R.id.main_activity_mileage_progressbar1);
					}
					pb1.setVisibility(View.VISIBLE);
				}else if(b.getInt("showProgressR1")==2){
					//우측 프로그래스바  종료
					if(pb1==null){
						pb1=(ProgressBar) findViewById(R.id.main_activity_mileage_progressbar1);
					}
					pb1.setVisibility(View.INVISIBLE);
				}
				if(b.getInt("showProgressL1")==1){
					//좌측 프로그래스바 실행
					if(pb01==null){
						pb01=(ProgressBar) findViewById(R.id.main_activity_mileage_ProgressBar01);
					}
					pb01.setVisibility(View.VISIBLE);
				}else if(b.getInt("showProgressL1")==2){
					//좌측 프로그래스바  종료
					if(pb01==null){
						pb01=(ProgressBar) findViewById(R.id.main_activity_mileage_ProgressBar01);
					}
					pb01.setVisibility(View.INVISIBLE);
				}

				if(b.getInt("showProgressL2")==3){
					//좌측 하단 프로그래스바 실행
					if(pb02==null){
						pb02=(ProgressBar) findViewById(R.id.main_activity_mileage_ProgressBar02);
					}
					pb02.setVisibility(View.VISIBLE);
				}else if(b.getInt("showProgressL2")==4){
					//좌측 하단 프로그래스바  종료
					if(pb02==null){
						pb02=(ProgressBar) findViewById(R.id.main_activity_mileage_ProgressBar02);
					}
					pb02.setVisibility(View.INVISIBLE);
				}
				if(b.getInt("showToast")==1){		// 화면에 토스트 띄우기
					Toast.makeText(MainActivityMileage.this, b.getString("msg"), Toast.LENGTH_SHORT).show();
				}
				if(b.getInt("showErrToast")==1){
					Toast.makeText(MainActivityMileage.this, getString(R.string.failed_to_open_page), Toast.LENGTH_SHORT).show();
					// 페이지를 불러오는데 실패했습니다.\n잠시후 다시 시도해주시기 바랍니다.		
				}
				
				switch (msg.what)
				{
				case SELECT_MERCHANT_MEMBER_MILEAGE_LIST : runOnUiThread(new RunnableSelectMerchantMemberMileageList());		
				break;
				default : 
					break;
				}		
				
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	};
	
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		Log.w(TAG,"onCreate");
		super.onCreate(savedInstanceState);

		requestWindowFeature(Window.FEATURE_NO_TITLE );	// 타이틀바 제거
		setContentView(R.layout.main_activity_mileage);
		
		carrotMemberStoreRest = new CarrotMemberStoreRest(); 
		
		mileageWebView = (WebView) findViewById(R.id.mileage_webview);
		custumerNum = (TextView) findViewById(R.id.main_mileage_text2);

		// 이미지 확대/축소/스크롤...
		//		registerWebView().setUseWideViewPort(true);		
		mileageWebView.setWebViewClient(new MyWebViewClient());
		mileageWebView.setWebChromeClient(new MyWebChromeClient());  // MyWebChromeClient 지정         -- javascript 사용 됨. 
		mileageWebView.addJavascriptInterface(new AndroidBridge(), "hybrid");
		WebSettings webSet = mileageWebView.getSettings();
		webSet.setJavaScriptEnabled(true);			// JavaScript 허용.
		// 확대/축소 금지. - 웹에서 차단함.
		//		webSet.setSupportZoom(true);
		//		webSet.setBuiltInZoomControls(true);

		entriesFn = new ArrayList<CheckMileageMileage>();
		// progress bar
		pb01 = (ProgressBar) findViewById(R.id.main_activity_mileage_ProgressBar01);		// 로딩(좌중앙)
		pb02 = (ProgressBar) findViewById(R.id.main_activity_mileage_ProgressBar02);		// 로딩(좌하단)

	}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



	// 데이터를 화면에 세팅
	/**
	 * setGriding
	 * 데이터를 화면에 세팅한다
	 *
	 * @param 
	 * @param 
	 * @return 
	 */
	public void setGriding(){
		mileageListAdapter = new MileageListAdapter(this, entriesFn);
		gridView  = (GridView)findViewById(R.id.gridview);
		gridView.setAdapter(mileageListAdapter);
	}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// 데이터 통신
	
	
	/**
	 * 러너블. 고객 마일리지 리스트를 가져온다.
	 */
	class RunnableSelectMerchantMemberMileageList implements Runnable {
		public void run(){
			new backgroundSelectMerchantMemberMileageList().execute();
		}
	}
	/**
	 * backgroundSelectMerchantMemberMileageList
	 * 비동기로 고객 마일리지 리스트를 가져온다.
	 *
	 * @param 
	 * @param 
	 * @return 
	 */
	public class backgroundSelectMerchantMemberMileageList extends  AsyncTask<Void, Void, Void> { 
		@Override protected void onPostExecute(Void result) {  
		} 
		@Override protected void onPreExecute() {  
		} 
		@Override protected Void doInBackground(Void... params) {  
			Log.d(TAG,"backgroundSelectMerchantMemberMileageList");
			
			// 파리미터 세팅
			CheckMileageMileage checkMileageMileageParam = new CheckMileageMileage();
			checkMileageMileageParam.setMerchantId(merchantId);	
			// 호출
			showLeft1Pb();
			callResult = carrotMemberStoreRest.RestSelectMerchantMemberMileageList(checkMileageMileageParam);
			// 결과 처리
			if(callResult.equals("S")){
				entriesFn = carrotMemberStoreRest.getCheckMileageMileageEntriesFn();
				new backgroundShowList().execute();
			}else{	
				hideLeft1Pb();
				adding = false;	
			}
			return null;
		}
	}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 웹뷰 관련
	
	/**
	 * Bridge Class
	 * 웹페이지로부터 요청을 받아서 처리한다.
	 */
	private class AndroidBridge {
		// 액티비티 종료
		/**
		 * finishActivity
		 *  액티비티 종료한다
		 *
		 * @param 
		 * @param 
		 * @return 
		 */
		public void finishActivity() {
			handler.post(new Runnable() {
				public void run() {
					finish();
				}
			});
		}
	}
	/**
	 * MyWebViewClient
	 *  웹뷰 클라이언트 이다. 페이지 로드,완료 이벤트 발생용도
	 *
	 */
	private class MyWebViewClient extends WebViewClient {
		public boolean shouldOverrideUrlLoading(WebView view, String url) {
			view.loadUrl(url);
			return true;
		}
		/* (non-Javadoc)
		 * @see android.webkit.WebViewClient#onPageFinished(android.webkit.WebView, java.lang.String)
		 */
		@Override
		public void onPageFinished(WebView view, String url) {
			super.onPageFinished(view, url);
			hidePb();
			webPageLoaded = true;
			nowLoading = false;
		}
		/* (non-Javadoc)
		 * @see android.webkit.WebViewClient#onPageStarted(android.webkit.WebView, java.lang.String, android.graphics.Bitmap)
		 */
		@Override
		public void onPageStarted(WebView view, String url, Bitmap favicon) {
			super.onPageStarted(view, url, favicon);
			showPb();
			new Thread(new Runnable() {
				@Override
				public void run() {
					//	            	sleepCounter = sleepCounter +1;
					try {
						Thread.sleep(CommonConstant.serverConnectTimeOut);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}finally{
						runOnUiThread(new Runnable(){
							public void run(){
								//	        					if(sleepCounter<2){
									if(mileageWebView.getProgress()<100 && !webPageLoaded) {
										// do what you want
										mileageWebView.stopLoading();
										hidePb();
										if(nowLoading){
											showErrMsg();
										}
										webPageLoaded = false;
									}
									//	        					}else{
									//	        						sleepCounter = sleepCounter - 1;
									//	        					}
							}
						});
						nowLoading = false;
					}
				}
			}).start();
		}
	}
	/**
	 * MyWebChromeClient
	 *  크롬 클라이언트이다. 자바스크립트 alert 사용 용도
	 *
	 */
	private class MyWebChromeClient extends WebChromeClient {
		//Javascript alert 실행 가능함
		@Override
		public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
			final JsResult finalRes = result;
			//AlertDialog 생성
			new AlertDialog.Builder(view.getContext())
			.setMessage(message)
			.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
					finalRes.confirm(); 
				}
			})
			.setCancelable(false)
			.create()
			.show();
			return true;
		}
	}


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 자체 메소드 및 기타 기능

	/*
	 * 고객 마일리지 리스트를 화면에 보여주기. 
	 */
	// 비동기로 화면에 데이터 보여주기
	/**
	 * backgroundShowList
	 * 비동기로 화면에 데이터 보여준다
	 *
	 * @param 
	 * @param 
	 * @return 
	 */
	public class backgroundShowList extends  AsyncTask<Void, Void, Void> { 
		@Override protected void onPostExecute(Void result) {  
		} 
		@Override protected void onPreExecute() {  
		} 
		@Override protected Void doInBackground(Void... params) {  
			Log.w(TAG,"backgroundShowList");
			showList();
			return null; 
		}
	}
	/**
	 * showList
	 *  화면에 데이터 보여준다
	 *
	 * @param 
	 * @param 
	 * @return 
	 */
	public void showList(){
		Log.d(TAG, "showList");
		hideLeft1Pb();
		hideLeft2Pb();					// 상황따라 다른데 일단 두개 다씀   *** 
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler.obtainMessage();
						Bundle b = new Bundle();
						b.putInt("showListYN", 1);		// 보여주기.
						message.setData(b);
						handler.sendMessage(message);
					}
				}
		).start();
	}

	
	/**
	 * showMsg
	 *  화면에 토스트 띄움 msg 변수에 내용을 넣어서 호출하면 화면에 토스트를 띄운다
	 *
	 * @param msg
	 * @param 
	 * @return 
	 */
	public void showMsg(final String msg){			
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler.obtainMessage();				
						Bundle b = new Bundle();
						b.putInt("showToast", 1);
						b.putString("msg", msg);
						message.setData(b);
						handler.sendMessage(message);
					}
				}
		).start();
	} 
	/*
	 * 프로그래스바 보임/숨김
	 */
	// 좌측 중앙 프로그래스바 보임/숨김
	/**
	 * showLeft1Pb
	 *  좌측 중앙 프로그래스바 띄운다
	 *
	 * @param 
	 * @param 
	 * @return 
	 */
	public void showLeft1Pb(){
		new Thread( 
				new Runnable(){
					public void run(){
						Message message = handler .obtainMessage();
						Bundle b = new Bundle();
						b.putInt( "showProgressL1" , 1);
						message.setData(b);
						handler .sendMessage(message);
					}
				}
		).start();
	}
	/**
	 * hideLeft1Pb
	 *  좌측 중앙 프로그래스바 숨긴다
	 *
	 * @param 
	 * @param 
	 * @return 
	 */
	public void hideLeft1Pb(){
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler .obtainMessage();
						Bundle b = new Bundle();
						b.putInt( "showProgressL1" , 2);
						message.setData(b);
						handler .sendMessage(message);
					}
				}
		).start();
	}
	// 좌측 하단 프로그래스바 보임/숨김
	/**
	 * showLeft2Pb
	 *  좌측 하단 프로그래스바 띄운다
	 *
	 * @param 
	 * @param 
	 * @return 
	 */
	public void showLeft2Pb(){
		new Thread( 
				new Runnable(){
					public void run(){
						Message message = handler .obtainMessage();
						Bundle b = new Bundle();
						b.putInt( "showProgressL2" , 1);
						message.setData(b);
						handler .sendMessage(message);
					}
				}
		).start();
	}
	/**
	 * hideLeft2Pb
	 *  좌측 하단 프로그래스바 숨긴다
	 *
	 * @param 
	 * @param 
	 * @return 
	 */
	public void hideLeft2Pb(){
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler .obtainMessage();
						Bundle b = new Bundle();
						b.putInt( "showProgressL2" , 2);
						message.setData(b);
						handler .sendMessage(message);
					}
				}
		).start();
	}
	// 우측 중앙 프로그래스바 보임/숨김
	/**
	 * showPb
	 * 우측 중앙 프로그래스바 띄운다
	 *
	 * @param 
	 * @param 
	 * @return 
	 */
	public void showPb(){
		new Thread( 
				new Runnable(){
					public void run(){
						Message message = handler .obtainMessage();
						Bundle b = new Bundle();
						b.putInt( "showProgressR1" , 1);
						message.setData(b);
						handler .sendMessage(message);
					}
				}
		).start();
	}
	/**
	 * hidePb
	 * 우측 중앙 프로그래스바 숨긴다
	 *
	 * @param 
	 * @param 
	 * @return 
	 */
	public void hidePb(){
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler .obtainMessage();
						Bundle b = new Bundle();
						b.putInt( "showProgressR1" , 2);
						message.setData(b);
						handler .sendMessage(message);
					}
				}
		).start();
	}

	// 화면에 error 토스트 띄움..
	/**
	 * showErrMsg
	 * 화면에 error 토스트 띄운다
	 *
	 * @param 
	 * @param 
	 * @return 
	 */
	public void showErrMsg(){			
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler.obtainMessage();				
						Bundle b = new Bundle();
						b.putInt("showErrToast", 1);
						message.setData(b);
						handler.sendMessage(message);
					}
				}
		).start();
	} 

	@Override
	public void onResume(){
		super.onResume();
		merchantId = MainTabsPage.merchantId;
		countryCode = MainTabsPage.countryCode;
		languageCode = MainTabsPage.languageCode;
		Log.e(TAG,"webPageLoaded:"+webPageLoaded+"//nowLoading:"+nowLoading);
		if(!webPageLoaded && !nowLoading){
			nowLoading = true;
			//				new backgroundMileageGraph().execute();		// 비동기로 URL 오픈 실행
			// 웹뷰는 비동기로 하지 않고 바로 실행한다.
//				postData = "Merchant-Language="+strLanguage+"&Merchant-Country="+strCountry+"&Merchant-Id="+merchantId;				// 파라미터 : Merchant-Language / Merchant-Country
			postData = "Merchant-Language="+languageCode+"&Merchant-Country="+countryCode+"&Merchant-Id="+merchantId;				// 파라미터 : Merchant-Language / Merchant-Country
			mileageWebView.postUrl(loadingURL, EncodingUtils.getBytes(postData, "BASE64"));
			mileageWebView.getSettings().setJavaScriptEnabled(true);
		}
		
//			loggingToServer();	// *** 보류
		
		// *** 서버로깅 주석처리에 따라 작성된 코드. 서버로깅시 이부분 주석처리
		if(!adding){
			adding = true;
			showLeft1Pb();
//			new backgroundSelectMerchantMemberMileageList().execute();		// 비동기로 고객 마일리지 리스트 가져옴.
			handler.sendEmptyMessage(SELECT_MERCHANT_MEMBER_MILEAGE_LIST);
		}
	}
	
	// 종료 확인
	@Override
	public void onBackPressed() {
		new AlertDialog.Builder(this)
		.setMessage(getString(R.string.confirm_logout))				//  로그아웃 하시겠습니까?  Are you sure you want to Logout?
		.setCancelable(false)
		.setPositiveButton(getString(R.string.yes), new DialogInterface.OnClickListener() {		// Yes
			public void onClick(DialogInterface dialog, int id) {
				MainActivityMileage.this.finish();
			}
		})
		.setNegativeButton(getString(R.string.no), null)			// No
		.show();
	}

	@Override
	public void onPause(){
		webPageLoaded = false;
		super.onPause();
	}


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//	// 서버에 로깅하기.
//	/**
//	 * 서버에 위치 및 로그 남김
//	 * loggingToServer
//	 */
//	public void loggingToServer(){
//					new backgroundUpdateLogToServer().execute();	// 비동기로 전환	
//	}
//	/**
//	 * 비동기로 사용자의 위치 정보 및 정보 로깅
//	 * backgroundUpdateLogToServer
//	 */
//	public class backgroundUpdateLogToServer extends  AsyncTask<Void, Void, Void> { 
//		@Override protected void onPostExecute(Void result) {  
//		} 
//		@Override protected void onPreExecute() {  
//		} 
//		@Override protected Void doInBackground(Void... params) {  
//			Log.d(TAG,"backgroundUpdateMyLocationtoServer");
//			updateLogToServer();
//			return null; 
//		}
//	}
//	/**
//	 * 사용자 위치 정보 및 정보 로깅
//	 * 
//	 */
//	public void updateLogToServer(){
//		if(isUpdating==0){
//			isUpdating = 1;
//			Log.i(TAG, "updateLocationToServer");
//			controllerName = "checkMileageLogController";
//			methodName = "registerLog";
//					
//			new Thread(
//					new Runnable(){
//						public void run(){
//							JSONObject obj = new JSONObject();
//							try{
//								// 자신의 아이디를 넣어서 조회
//								Date today = new Date();
//								SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//								String nowDate = sf.format(today);
//								obj.put("checkMileageId", "");	// checkMileageId 	사용자 아이디
//								obj.put("merchantId", merchantId);		// merchantId		가맹점 아이디.
//								// CheckMileageMerchantAmassView CheckMileageMerchantCheckView // 적립, 차감
//								// CheckMileageMerchantAnnouncementView // CheckMileageMerchantMileageCustomerListView // 공지, 목록
//								// CheckMileageMerchantPreferenceView	// 설정
//								obj.put("viewName", "CheckMileageMerchantMileageCustomerListView");		// viewName			출력된 화면.
//								obj.put("parameter01", "");		// parameter01		사용자 전화번호.
//								obj.put("parameter02", "");		// parameter02		위도.
//								obj.put("parameter03", "");		// parameter03		경도.
//								obj.put("parameter04", "");		// parameter04		검색일 경우 검색어.
//								obj.put("parameter05", "");		// parameter05		예비용도.
//								obj.put("parameter06", "");		// parameter06		예비용도.
//								obj.put("parameter07", "");		// parameter07		예비용도.
//								obj.put("parameter08", "");		// parameter08		예비용도.
//								obj.put("parameter09", "");		// parameter09		예비용도.
//								obj.put("parameter10", "");		// parameter10		예비용도.
//								obj.put("registerDate", nowDate);		// registerDate		등록 일자.
//							}catch(Exception e){
//								e.printStackTrace();
//							}
//							String jsonString = "{\"checkMileageLog\":" + obj.toString() + "}";
//							try{
//								postUrl2 = new URL(serverName+"/"+controllerName+"/"+methodName);
//								connection2 = (HttpURLConnection) postUrl2.openConnection();
//								connection2.setConnectTimeout(CommonConstant.serverConnectTimeOut);
//								connection2.setDoOutput(true);
//								connection2.setInstanceFollowRedirects(false);
//								connection2.setRequestMethod("POST");
//								connection2.setRequestProperty("Content-Type", "application/json");
//								//								connection2.connect();
//								Thread.sleep(200);
//								OutputStream os2 = connection2.getOutputStream();
//								os2.write(jsonString.getBytes("UTF-8"));
//								os2.flush();
//								Thread.sleep(200);
//								responseCode = connection2.getResponseCode();
//								// 조회한 결과를 처리.
//								if(responseCode==200 || responseCode==204){
//									Log.d(TAG,"updateLogToServer S");
//								}else{
//									Log.d(TAG,"updateLogToServer F / "+responseCode);
//								}
//							}catch(Exception e){ 
//								Log.d(TAG,"updateLocationToServer->fail");
//							}finally{
//								isUpdating = 0;
//								
//								if(!adding){
//									adding = true;
//									showLeft1Pb();
//									new backgroundSelectMerchantMemberMileageList().execute();		// 비동기로 고객 마일리지 리스트 가져옴.
//								}
//							}
//						}
//					}
//			).start();
//		}else{
//			Log.w(TAG,"already updating..");
//		}
//	}
}
